package de.mnit.basis.sys.datei;

import de.mnit.basis.daten.struktur.liste.S_Liste;
import de.mnit.basis.fehler.system.F_Sys_Datei;

public interface S_Ordner extends S_DS_Element {

	S_Liste<S_Ordner>   inhaltO();
	S_Liste<S_Ordner>   inhaltO(String regex);
	S_Liste<S_Datei>    inhaltD();
	S_Liste<S_Datei>    inhaltD(boolean rekursiv);
	S_Liste<S_Datei>    inhaltD(boolean rekursiv, boolean versteckte_ordner);
	S_Liste<S_Datei>    inhaltD_mitEndung(String... filter);
	S_Liste<S_Datei>    inhaltD_mitEndung(boolean rekursiv, String... filter);
	S_Liste<S_Datei>    inhaltD(String regex);
	S_Liste<S_DS_Element> inhalt();

	boolean kennt (String name);
	boolean kenntO(String name);
	boolean kenntD(String name);

	S_Ordner o(String name) throws F_Sys_Datei;
	S_Datei  d(String dateiname) throws F_Sys_Datei;
	S_Datei  d(String dateiname, String endung) throws F_Sys_Datei;

	S_Ordner oN(String name) throws F_Sys_Datei;
	S_Ordner oF(String name) throws F_Sys_Datei;

	S_Datei dN(String dateiname) throws F_Sys_Datei;
	S_Datei dN(String name, String endung) throws F_Sys_Datei; //TODO prüfen, ob der gleich die Datei anlegt! Darf nämlich nicht!
	S_Datei dF(String dateiname);
	S_Datei dF(String name, String endung);

	void    sNurLesbar() throws F_Sys_Datei;

}
